package com.xhsj.user.hr.system.mapper;

import com.xhsj.user.hr.process.hrLeaveProcess.query.CompensatoryLeaveTimeQuery;
import com.xhsj.user.hr.process.hrLeaveProcess.vo.LeaveUsableLengthVo;
import org.apache.ibatis.annotations.Mapper;
import com.xhsj.user.hr.system.entity.TbHrLeaveUsableLength;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 加班/年假 可用时长 Mapper 接口
 * </p>
 *
 * @author suxiaolin
 * @since 2020-10-27
 */
@Mapper
public interface TbHrLeaveUsableLengthMapper extends BaseMapper<TbHrLeaveUsableLength> {

    /**
     * 通过年份和创建人查询数据
     * @author 苏小林
     * @date 2020/10/27 16:37
     * @param: currentYear
     * @param: createBy
     * @return: com.xhsj.user.hr.system.entity.TbHrLeaveUsableLength
     */
    int getByUserIdAndYear(@Param("year") String year, @Param("createBy") Long createBy);


    /**
     * 通过年份和创建人查询加班总数量和可用数量
     * @author 苏小林
     * @date 2020/10/27 16:37
     * @param: currentYear
     * @param: createBy
     * @return: com.xhsj.user.hr.system.entity.TbHrLeaveUsableLength
     */
    LeaveUsableLengthVo getNumberByUserIdAndYear(@Param("year") String year, @Param("createBy") Long createBy);

    /**
     * 通过年份和创建人修改数量
     * @author 苏小林
     * @date 2020/10/27 16:48
     * @param: s
     * @param: createBy
     * @param: currentNumber
     */
    void updateByUserIdAndYear(@Param("year") String year, @Param("createBy") Long createBy, @Param("number") int number,@Param("allOverNumber") int allOverNumber);

    /**
     * 新增加班可用时长
     * @author 苏小林
     * @date 2021/6/3 15:23
     * @param: year
     * @param: createBy
     * @param: number
     */
    void addOverTimeUsable(@Param("year") String year, @Param("createBy") Long createBy, @Param("number") int number);

    /**
     * 通过年份和创建人减可用数
     * @author 苏小林
     * @date 2020/10/27 16:48
     * @param: s
     * @param: createBy
     * @param: currentNumber
     */
    void substractNumberByUserIdAndYear(@Param("year") String year, @Param("createBy") Long createBy, @Param("number") int number);
}
